home *** CD-ROM | disk | FTP | other *** search
Wrap
; ----------------------------------------------------- ; Peace and Protection (by misspai) ; ----------------------------------------------------- ; Custom window popups (loads ; into remotes) (First section) ; ----------------------------------------------------- ; Detailed channel server usage ; window ; ----------------------------------------------------- menu @Server { dclick /if ($1 < 4) halt | set %-servtocon $strip($gettok($line(@server,$1),3,32)) | set %_arhelp server %-servtocon | _pentry _arhelp6667 Connecting to %-servtocon $+ -Port to use? Connect to server...:if ($sline(@server,1).ln < 4) halt | set %-servtocon $strip($gettok($sline(@server,1),3,32)) | set %_arhelp server %-servtocon | _pentry _arhelp6667 Connecting to %-servtocon $+ -Port to use? - Ping server:{ set %.num $sline(@server,0) set %.delay 0 :loop set %.line $sline(@server,%.num).ln if (%.line < 4) goto next set %.theline $sline(@server,%.num) if (%.delay < 1) sping $strip($gettok(%.theline,3,32)) @server else .timer 1 %.delay sping $strip($gettok(%.theline,3,32)) @server rline @server %.line $gettok(%.theline,1-6,32) %col.att $+ (waitingáon ping) $gettok(%.theline,9-,32) inc %.delay 2 :next if ($_vd(.num) > 0) goto loop set %_serv.pop4 Sort by server ping set %_serv.pop4o $true } Ping all servers:{ set %.num $line(@server,0) set %.delay 0 :loop set %.theline $line(@server,%.num) if (%.delay < 1) sping $strip($gettok(%.theline,3,32)) @server else .timer 1 %.delay sping $strip($gettok(%.theline,3,32)) @server rline @server %.num $gettok(%.theline,1-6,32) %col.att $+ (waitingáon ping) $gettok(%.theline,9-,32) inc %.delay 2 if ($_vd(.num) >= 4) goto loop set %_serv.pop4 Sort by server ping set %_serv.pop4o $true } - %_serv.pop1:{ _dosort @server 4 4 $chr(40) 32 unset %_serv.pop1 set %_serv.pop2 Sort by number of users set %_serv.pop3 Sort by server name if (%_serv.pop4o) set %_serv.pop4 Sort by server ping rline @Server 1 Currently sorted by server hops (closest servers first) } %_serv.pop2:{ _dosort @server 4 10 32 > unset %_serv.pop2 set %_serv.pop1 Sort by server hops set %_serv.pop3 Sort by server name if (%_serv.pop4o) set %_serv.pop4 Sort by server ping rline @Server 1 Currently sorted by number of users (most users first) } %_serv.pop3:{ _dosort @server 4 3 32 unset %_serv.pop3 set %_serv.pop1 Sort by server hops set %_serv.pop2 Sort by number of users if (%_serv.pop4o) set %_serv.pop4 Sort by server ping rline @Server 1 Currently sorted by server name (alphabetically) } %_serv.pop4:{ _dosort @server 4 7 $chr(40) 115 unset %_serv.pop4 set %_serv.pop1 Sort by server hops set %_serv.pop2 Sort by number of users set %_serv.pop3 Sort by server name rline @Server 1 Currently sorted by ping time (fastest times first) } - Get new list:scan $gettok($window(@Server).titlebar,3,32) d - Copy to clipboard:if ($sline(@server,1).ln < 4) halt | clipboard $_stripout($sline(@server,1)) Copy server to clipboard:if ($sline(@server,1).ln < 4) halt | clipboard $strip($gettok($sline(@server,1),3,32)) - Close:window -c @Server Help:help ! server usage popups } ; _dosort @window first-line-# token-num char-remove token-to-seperate (>) alias _dosort { aline 15 $1 - set %.sort.from $2 set %.sort.to $line($1,0) :loop1 set %.sort.line $line($1,%.sort.from) dline $1 %.sort.from if (%.sort.line == -) return set %.sort.crit $gettok($remove($strip($gettok(%.sort.line,$3,32)),$4),1,$5) set %.sort.toline %.sort.to :loop2 if (%.sort.toline <= $line($1,0)) { if ($6 == >) { if ($gettok($remove($strip($gettok($line($1,%.sort.toline),$3,32)),$4),1,$5) > %.sort.crit) { inc %.sort.toline | goto loop2 } } elseif ($gettok($remove($strip($gettok($line($1,%.sort.toline),$3,32)),$4),1,$5) < %.sort.crit) { inc %.sort.toline | goto loop2 } } iline $1 %.sort.toline %.sort.line dec %.sort.to goto loop1 } ; ----------------------------------------------------- ; Music file roulette window ; ----------------------------------------------------- menu @Roulette { dclick /if (%+roulette.retain) _doroul $1 + | else _doroul $1 Play file and close:_doroul $sline(@Roulette,1).ln Play file, stay open:_doroul $sline(@Roulette,1).ln + - Play randomly:_doroul 4 Playlist all:_doroul 5 Playlist selected:_doroul 5 ! - Set file description...:desc $_getexp($sline(@Roulette,1)) Clear file description:cdesc $_getexp($sline(@Roulette,1)) Show descriptions:set %_+roulcolor $true | _srdesc - On play, window .$_dynpop(%+roulette.retain) Stays open:if ($_not(%+roulette.retain)) _doroul 2 .$_dynpop($_not(%+roulette.retain)) Closes:if (%+roulette.retain) _doroul 2 - File finder...:_r2ff Close:window -c @Roulette Help:help ! roulette selection popups } alias _r2ff { window -c @Express window -nl @Express $_winpos(50,30,50,50) @Express %font.basic set %.file $_ppdir $+ r2fftemp.txt set %.num $calc($line(@Roulette,0) - 6) .savebuf %.num @Roulette %.file .loadbuf @Express %.file titlebar @Express File Finder ( $+ %.num files found) sline @Express 1 iline @Express 1 - Search performed : @Roulette window - iline @Express 2 - Select file(s) and right-click for options - iline @Express 3 - Double-click will : $+ %eff.click file $+ - iline @Express 4 $chr(160) window -arb @Express .remove %.file } alias _ff2r { window -c @Roulette | open @Roulette set %.file $_ppdir $+ ff2rtemp.txt set %.num $calc($line(@Express,0) - 4) .savebuf %.num @Express %.file .loadbuf @Roulette %.file titlebar @Roulette selection for sound files ( $+ %.num matches) iline @Roulette 1 - Double-click on a file to play it - (right-click for other options) if (%+roulette.retain) iline @Roulette 2 - Window will stay open on play (double-click here to toggle) - else iline @Roulette 2 - Window will close on play (double-click here to toggle) - iline @Roulette 3 $chr(160) iline -s @Roulette 4 - Double-click here to select one randomly - iline @Roulette 5 - Double-click here to playlist all files - iline @Roulette 6 $chr(160) window -arb @Roulette set %_+roulcolor $true | .remove %.file } alias _srdesc { _progress.1 Grabbing file descriptions... _progress.2 0 0% set %.pl.num $line(@Roulette,0) set %.pl.tot %.pl.num :loop set %.pl.file $_getexp($line(@Roulette,%.pl.num)) set %.pl.desc $_ppdesc($nopath(%.pl.file)) if ((%.pl.desc == $null) || (%.pl.desc == (none))) rline @Roulette %.pl.num %.pl.file else rline @Roulette %.pl.num %col.info1 $+ $_s2f(%.pl.desc) $+ $chr(160) %.pl.file if ($_vi(.perc) > 4) { set %.perc $int($calc((%.pl.tot - %.pl.num) * 100 / (%.pl.tot - 6))) _progress.2 %.perc %.perc $+ % unset %.perc } if ($_vd(.pl.num) > 6) goto loop window -c @Progress } alias _doroul { if ($1 == 2) { set %+roulette.retain $_not(%+roulette.retain) if (%+roulette.retain) rline @Roulette 2 - Window will stay open on play (double-click here to toggle) - else rline @Roulette 2 - Window will close on play (double-click here to toggle) - return } if ($1 == 5) { .timer918 off | .timer921 off set %.pl.type $_rtok(1,46,$_getexp($line(@Roulette,7))) if (%.pl.type == mp3) { set %.pl.exe $_mp3exe if (%.pl.exe == $null) _error MP3 player not defined! } elseif (%.pl.type == mp2) { set %.pl.exe $_mp2exe if (%.pl.exe == $null) _error MP2 player not defined! } else _error Only MP2/MP3s can be playlisted! set %.pl.file $_ppdir $+ playlist if ((maplay isin %.pl.exe) || (mp2win isin %.pl.exe)) set %.pl.file %.pl.file $+ .lst else set %.pl.file %.pl.file $+ .m3u if ($exists(%.pl.file)) .remove %.pl.file if ($2 == !) { sline -r @Roulette 1 | sline -r @Roulette 2 | sline -r @Roulette 3 sline -r @Roulette 4 | sline -r @Roulette 5 | sline -r @Roulette 6 set %.pl.num $sline(@Roulette,0) if (%.pl.num < 1) _error No files selected to playlist! set %.pl.cur 1 :loop write %.pl.file $_getexp($sline(@Roulette,%.pl.cur)) if ($_vi(.pl.cur) <= %.pl.num) goto loop } elseif (%_+roulcolor) { set %.pl.num $line(@Roulette,0) set %.pl.cur 7 :loop write %.pl.file $_getexp($line(@Roulette,%.pl.cur)) if ($_vi(.pl.cur) <= %.pl.num) goto loop } else .savebuf $calc($line(@Roulette,0) - 6) @Roulette %.pl.file if ($chr(32) isin $mircdir) run -n %.pl.exe " $+ $mircdir $+ %.pl.file $+ " else run -n %.pl.exe %.pl.file return } if ($1 == 4) set %.dr.ln $r(7,$line(@Roulette,0)) else set %.dr.ln $1 if (%.dr.ln < 7) return set %.dr.file $_getexp($line(@Roulette,%.dr.ln)) if ($2 == +) window -n @Roulette else window -c @Roulette set %.dr.ext $_mapext($_rtok(1,46,%.dr.file)) if ((%.dr.ext == mp2) || (%.dr.ext == mp3)) set %.dr.ext mp if (%.dr.ext == wav) set %.dr.name Wave elseif (%.dr.ext == mid) set %.dr.name Midi elseif (%.dr.ext == mp) set %.dr.name MP2/MP3 else { set %.dr.name %soundfile. [ $+ [ %.dr.ext ] ] if (%.dr.name == $null) set %.dr.name Custom Sound } _dosnd $_s2f(%.dr.name) . $+ %.dr.ext %.dr.file } ; ----------------------------------------------------- ; Express File Find window ; ----------------------------------------------------- menu @Express { dclick /if ($1 < 5) halt | if ($sline(@Express,0) > 1) halt | if (%eff.click == Edit) _dosel @Express run $_ppcfg(Misc,TextView) | elseif (%eff.click == Run) _dosel @Express run | elseif (%eff.click == Play) splay $_getexp($sline(@Express,1)) | else { set %_arhelp _dosel @Express " s | _askr _arhelp Nick to send $_plural(file,$sline(@Express,0)) to? } Calculate .File sizes:_effhl z .File lengths in lines:_effhl l Highlight .Find text...:_askr _efffind Text to find in filenames? .- .Filename:_effhl f .Extension:_effhl e .Subdir:_effhl s Dblclick .$_dynpop($_if( [ edit ] isin [ %eff.click ] )) Edit:set %eff.click Edit | rline @Express 3 - Double-click will : $+ %eff.click file $+ - .$_dynpop($_if( [ run ] isin [ %eff.click ] )) Run:set %eff.click Run | rline @Express 3 - Double-click will : $+ %eff.click file $+ - .$_dynpop($_if( [ dcc ] isin [ %eff.click ] )) Send:set %eff.click DCC Send | rline @Express 3 - Double-click will : $+ %eff.click file $+ - .$_dynpop($_if( [ play ] isin [ %eff.click ] )) Play:set %eff.click Play | rline @Express 3 - Double-click will : $+ %eff.click file $+ - - Edit:_dosel @Express run $_ppcfg(Misc,TextView) Run:_dosel @Express run Send .$query(1):_dosel @Express " s $query(1) .$query(2):_dosel @Express " s $query(2) .$query(3):_dosel @Express " s $query(3) .$remove($chat(1),=):_dosel @Express " s $remove($chat(1),=) .$remove($chat(2),=):_dosel @Express " s $remove($chat(2),=) .$remove($chat(3),=):_dosel @Express " s $remove($chat(3),=) .$get(1):_dosel @Express " s $get(1) .$send(1):_dosel @Express " s $send(1) .- .Other...:set %_arhelp _dosel @Express " s | _askr _arhelp Nick to send $_plural(file,$sline(@Express,0)) to? Play:if ($sline(@Express,1).ln < 5) halt | splay $_getexp($sline(@Express,1)) - %_findrcpop .Original sender:_doselos @Express .- .$query(1):_dosel @Express " dcc i $query(1) .$query(2):_dosel @Express " dcc i $query(2) .$query(3):_dosel @Express " dcc i $query(3) .$remove($chat(1),=):_dosel @Express " dcc i $remove($chat(1),=) .$remove($chat(2),=):_dosel @Express " dcc i $remove($chat(2),=) .$remove($chat(3),=):_dosel @Express " dcc i $remove($chat(3),=) .$get(1):_dosel @Express " dcc i $get(1) .$send(1):_dosel @Express " dcc i $send(1) .- .Other...:set %_arhelp _dosel @Express " dcc i | _askr _arhelp Nick to request completion of $_plural(file,$sline(@Express,0)) from? - Misc .Copy to clipboard:clipboard $_getexp($sline(@Express,1)) .Type file to window...:set %_arhelp _doplay | _askr _arhelp Nick/channel to type $_getexp($sline(@Express,1)) to?(once started, /play stop to cancel) .- .$iif(3.1 !isin $os,Explore from dir):if ($sline(@Express,1).ln < 5) halt | run explorer $_ltok($_j($_numtok(92,$_getexp($sline(@Express,1)))),92,$_getexp($sline(@Express,1))) .Winzip:_askr _zipsel Filename to zip to? .- .Roulette sound window...:_ff2r .- .Delete files...:if ($sline(@Express,1).ln < 5) halt | if ($sline(@Express,0) == 1) _askyn _delsel Delete $_getexp($sline(@Express,1)) $+ ? | else _askyn _delsel Delete $sline(@Express,0) selected files? .Remove lines:if ($sline(@Express,1).ln < 5) halt | set %.rm.lin $sline(@Express,0) | :loop | dline @Express $sline(@Express,%.rm.lin).ln | if ($_vd(.rm.lin) > 0) goto loop - Save list .Overwrite...:_askr _effsave Filename to save list to? (overwriting if exists) .Append...:_askr _effsave2 Filename to save list to? (appending to end if exists) Select all:sline @Express 5 | set %.ds.num $line(@Express,0) | :loop | sline -a @Express %.ds.num | if ($_vd(.ds.num) > 5) goto loop | sline -a @Express 1 | sline -r @Express 1 Close:window -c @Express - Help:help ! express file finder popups } alias _getexp return $strip($_rtok(1,9,$1-)) alias _doplay play $1 $_getexp($sline(@Express,1)) 500 alias _effsave { .savebuf $calc($line(@Express,0) - 4) @Express $1- _recfile2 $1- titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - List saved to $1- } alias _effsave2 { .savebuf -a $calc($line(@Express,0) - 4) @Express $1- _recfile2 $1- titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - List to $1- (appended) } alias _effhl { set %.ds.max $line(@Express,0) set %.ds.num 5 if ($1 isin zl) { _progress.1 Calculating file sizes... unset %.ds.total } else _progress.1 Highlighting... :loop1 set %.ds.line $line(@Express,%.ds.num) if ($1 == z) { if ( isin %.ds.line) set %.ds.line $gettok(%.ds.line,2,9) set %.ds.size $lof($strip(%.ds.line)) inc %.ds.total %.ds.size set %.ds.line $+ %col.base $+ ( $+ $_size2(%.ds.size) $+ ) $+ $+ %.ds.line } elseif ($1 == l) { if ( isin %.ds.line) set %.ds.line $gettok(%.ds.line,2,9) set %.ds.size $lines($strip(%.ds.line)) if (%.ds.size < 1) set %.ds.size n/a elseif ($calc(%.ds.size * 350) < $lof($strip(%.ds.line))) set %.ds.size n/a else inc %.ds.total %.ds.size set %.ds.line $+ %col.base $+ ( $+ %.ds.size $+ ) $+ $+ %.ds.line } elseif ($1 == e) { if ( isin %.ds.line) { set %.ds.pre $gettok(%.ds.line,1,9) $+ | set %.ds.line $gettok(%.ds.line,2,9) } else unset %.ds.pre if (. isin %.ds.line) { set %.ds.ext $_rtok(1,46,$strip(%.ds.line)) set %.ds.line %.ds.pre $+ $remtok($strip(%.ds.line),%.ds.ext,46) $+ %col.att $+ . $+ %.ds.ext } else set %.ds.line %.ds.pre $+ %.ds.line } elseif ($1 == f) { if ( isin %.ds.line) { set %.ds.pre $gettok(%.ds.line,1,9) $+ | set %.ds.line $gettok(%.ds.line,2,9) } else unset %.ds.pre set %.ds.line $strip(%.ds.line) if (. isin %.ds.line) { set %.ds.ext $_rtok(1,46,%.ds.line) set %.ds.line %.ds.pre $+ $nofile(%.ds.line) $+ %col.att $+ $remtok($nopath(%.ds.line),%.ds.ext,46) $+ . $+ %.ds.ext } else set %.ds.line %.ds.pre $+ $nofile(%.ds.line) $+ %col.att $+ $nopath(%.ds.line) } else { if ( isin %.ds.line) { set %.ds.pre $gettok(%.ds.line,1,9) $+ | set %.ds.line $gettok(%.ds.line,2,9) } else unset %.ds.pre set %.ds.line $strip(%.ds.line) set %.ds.path $nofile(%.ds.line) if ($count(%.ds.path,\) == 1) set %.ds.line %.ds.pre $+ $remove(%.ds.path,\) $+ %col.att $+ \ $+ $nopath(%.ds.line) else { set %.ds.last $_rtok(1,92,%.ds.path) set %.ds.line %.ds.pre $+ $remtok(%.ds.path,%.ds.last,92) $+ %col.att $+ \ $+ %.ds.last $+ \ $+ $nopath(%.ds.line) } } rline @Express %.ds.num %.ds.line if ($_vi(.ds.prog) > 5) { unset %.ds.prog set %.ds.perc $int($calc(%.ds.num * 100 / %.ds.max)) _progress.2 %.ds.perc %.ds.num $+ / $+ %.ds.max - %.ds.line } if ($_vi(.ds.num) <= %.ds.max) goto loop1 window -c @Progress if ($1 == z) titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - Total size - $_size2(%.ds.total) elseif ($1 == l) titlebar @Express $gettok($window(@Express).titlebar,1-5,32) - Total lines - %.ds.total } alias _efffind { sline @Express 1 | sline -r @Express 1 set %.ds.toks $replace($replace($1-,*,$chr(32)),?,$chr(32)) if (%.ds.toks == $null) _error You need to use a more specific search string. set %.ds.find * $+ $replace($1-,$chr(32),*) $+ * set %.ds.max $line(@Express,0) set %.ds.num 5 set %.ds.ins 5 _progress.1 Scanning for text... :loop1 if ( isin $line(@Express,%.ds.num)) set %.ds.pre $gettok($line(@Express,%.ds.num),1,9) $+ else unset %.ds.pre set %.ds.line $_getexp($line(@Express,%.ds.num)) if (%.ds.find iswm %.ds.line) { set %.ds.tok $_numtok(32,%.ds.toks) :loop2 set %.ds.new %col.att $+ $gettok(%.ds.toks,%.ds.tok,32) $+ set %.ds.line $replace(%.ds.line,$gettok(%.ds.toks,%.ds.tok,32),%.ds.new) if ($_vd(.ds.tok) > 0) goto loop2 dline @Express %.ds.num iline @Express %.ds.ins %.ds.pre $+ %.ds.line inc %.ds.ins } if ($_vi(.ds.prog) > 5) { unset %.ds.prog set %.ds.perc $int($calc(%.ds.num * 100 / %.ds.max)) _progress.2 %.ds.perc %.ds.num $+ / $+ %.ds.max - %.ds.line } if ($_vi(.ds.num) <= %.ds.max) goto loop1 window -c @Progress } alias _doselos { if ($sline($1,1).ln < 5) halt set %.ds.num $sline($1,0) :loop set %.ds.line $_getexp($sline($1,%.ds.num)) set %.ds.nm $sline($1,%.ds.num).ln if ($chr(32) isin %.ds.line) dcc i %_ffreqc. [ $+ [ $calc(%.ds.nm - 4) ] ] " $+ %.ds.line $+ " else dcc i %_ffreqc. [ $+ [ $calc(%.ds.nm - 4) ] ] %.ds.line if ($_vd(.ds.num) > 0) goto loop } alias _dosel { if ($sline($1,1).ln < 5) halt set %.ds.num $sline($1,0) :loop set %.ds.line $_getexp($sline($1,%.ds.num)) if ($2 == ") { if ($chr(32) isin %.ds.line) $3- " $+ %.ds.line $+ " else $3- %.ds.line } else $2- %.ds.line if ($_vd(.ds.num) > 0) goto loop } alias _delsel { set %.ds.max $sline(@Express,0) set %.ds.total %.ds.max set %.ds.num 1 set %.ds.cur 0 unset %.+ds.err _progress.1 Deleting files... :loop set %.ds.file $_getexp($sline(@Express,%.ds.num)) .remove %.ds.file if ($exists(%.ds.file)) { set %.+ds.err $true | disps Error- Could not delete " $+ %.ds.file $+ " | inc %.ds.num } else { dline @Express $sline(@Express,%.ds.num).ln | dec %.ds.max } inc %.ds.cur if ($calc(%.ds.cur % 5) == 1) { set %.ds.perc $int($calc(%.ds.cur * 100 / %.ds.total)) _progress.2 %.ds.perc %.ds.perc $+ % - %.ds.file } if (%.ds.num <= %.ds.max) goto loop window -c @Progress if (%.+ds.err) _error Not all files could be deleted! See status window for list of files not deleted. (might be read-only files.) } alias _zipsel { if ($sline(@Express,1).ln < 5) halt set %.zipper $_ppcfg(misc,winzip) if (%.zipper == $null) _error Location of WinZip not defined in CONFIG.INI. Type /findzip to locate WinZip. if ($_not($exists(%.zipper))) _error WinZip has moved or been deleted. Type /findzip to locate WinZip. set %.tozip $mircdir $+ $_ppsub $+ \winzip.lst if ($exists(%.tozip)) .remove %.tozip set %.zip.num $sline(@Express,0) :loop write %.tozip $_wrapfile($_getexp($sline(@Express,%.zip.num))) if ($_vd(.zip.num) > 0) goto loop else run %.zipper -a $_adddir($1-) @ $+ $_wrapfile(%.tozip) } ; ----------------------------------------------------- ; Click 'N' Color ; ----------------------------------------------------- menu @CNC { Apply style to current text:cnc Enable style for all future text:cnc + - Reset settings:cncoff Close Click 'N' Color:cnc - - Help:help ! CNC command } on 1:close:@Click:cnc - @Click on 1:close:@BK:cnc - @BK on 1:close:@FG:cnc - @FG on 1:close:@Attr:cnc - @Attr on 1:close:@Pattern:cnc - @Pattern on 1:close:@Text:cnc - @Text on 1:close:@Backwards:cnc - @Backwards ; ----------------------------------------------------- ; Banlist editor ; ----------------------------------------------------- menu @Banlist { dclick /if ($1 < 5) halt | set %.tog.num $sline(@Banlist,0) | :loop | _BLmodban ! $gettok($sline(@Banlist,%.tog.num),2,9) $sline(@Banlist,%.tog.num).ln | if ($_vd(.tog.num) > 0) goto loop Toggle bans:if ($sline(@Banlist,1).ln < 5) halt | set %.tog.num $sline(@Banlist,0) | :loop | _BLmodban ! $gettok($sline(@Banlist,%.tog.num),2,9) $sline(@Banlist,%.tog.num).ln | if ($_vd(.tog.num) > 0) goto loop Add new ban...:set %_arhelp _BLmodban + | _askr _arhelp Banmask to add? Modify bans .Enter new ban mask...:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod a .Change to domain bans:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod d .Change to ident@domain bans:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod i - Add bans to blacklist .For %_banchan $+ ...:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod c .For all channels...:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod b %s^xwban:if ($sline(@Banlist,1).ln < 5) halt | if ($_isxw(%_banchan) == $null) _error X or W is not on that channel! | _BLgetmod | _BLdomod x %s^csban:if ($sline(@Banlist,1).ln < 5) halt | _BLgetmod | _BLdomod z - Cleanup .Remove bans matching a user or mask...:_askr _BLclean Nick or address/mask to match? .Remove nick-based bans:_BLclean n .Remove dynamic IP bans:_BLclean d .Remove bans older than...:set %_arhelp _BLclean o | _askr _arhelp Remove bans older than how many days? .Remove illegal bans:_BLclean i Backup .Save banlist to file...:_askr _BLsave Filename to save to? .Import banlist... (add to banlist):set %.toimport $dir="Banlist to import?" $mircdir*.txt | _BLimport %.toimport .Import banlist... (replace banlist):set %.toimport $dir="Banlist to import?" $mircdir*.txt | set %.tog.num $line(@Banlist,0) | :loop | _BLmodban - $gettok($line(@Banlist,%.tog.num),2,9) %.tog.num | if ($_vd(.tog.num) > 3) goto loop | _BLimport %.toimport - Select all:sline @Banlist 5 | set %.tog.num $line(@Banlist,0) | :loop | sline -a @Banlist %.tog.num | if ($_vd(.tog.num) > 4) goto loop Close:{ window -c @Banlist if ((%_bantoadd != $null) || (%_bantorem != $null)) { if ($me !isop %_banchan) { unset %_ban* | _error You are not an op on %_banchan $+ , banlist modifications canceled. } if (%_bantorem != $null) _massmode %_banchan -b %_bantorem | if (%_bantoadd != $null) _massmode %_banchan +b %_bantoadd } unset %_ban* } - Help:help ! banlist popups } alias _BLtitle { set %.bl.title $gettok($window(@Banlist).titlebar,1-3,32) if ((%_banrems < 1) && (%_banadds < 1)) titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) elseif (%_banadds < 1) titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) originally, removing %_banrems $+ , leaving $calc(%_bancount - %_banrems) elseif (%_banrems < 1) titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) originally, adding %_banadds $+ , making $calc(%_bancount + %_banadds) total else titlebar @Banlist %.bl.title %_bancount $_plural(ban,%_bancount) originally, adding %_banadds $+ , removing %_banrems $+ , making $calc(%_bancount + %_banadds - %_banrems) total } ; _BLmodban -/+/! banmask [line#] [-a] ; (-a means, if new line added, add to selections not replace) alias _BLmodban { if (($3 isnum) && ($3 != $null) && ($gettok($line(@Banlist,$3),2,9) == $2)) { set %.bl.num $3 | goto found } set %.bl.num $line(@Banlist,0) :loop if ($gettok($line(@Banlist,%.bl.num),2,9) == $2) goto found if ($_vd(.bl.num) > 4) goto loop if ($1 == -) return if (($3 == $null) || ($3 !isnum)) set %.bl.addto $line(@Banlist,0) else set %.bl.addto $3 inc %.bl.addto if (-a isin $3-) set %.bl.switch -a else set %.bl.switch -s iline %.bl.switch @Banlist %.bl.addto %col.att $+ +b $+ $2 $+ Adding ban inc %_banadds set %_bantoadd %_bantoadd $2 _BLtitle return :found set %.bl.op $1 set %.bl.is $remove($strip($gettok($line(@Banlist,%.bl.num),1,9)),b) if ($1 == !) { if (%.bl.is == -) set %.bl.op + else set %.bl.op - } if (%.bl.op == -) { if (%.bl.is == +) { dline @Banlist %.bl.num | dec %_banadds | set %_bantoadd $remtok(%_bantoadd,$2,32) } elseif (%.bl.is == *) { rline -a @Banlist %.bl.num %col.att $+ -b $+ $2 $+ $+ %col.info3 $+ Removing ban set by $gettok($line(@Banlist,%.bl.num),3-,9) inc %_banrems set %_bantorem %_bantorem $2 } } elseif (%.bl.is == -) { rline -a @Banlist %.bl.num %col.att $+ *b $+ $2 $+ $+ $gettok($gettok($line(@Banlist,%.bl.num),3-,9),5-,32) dec %_banrems set %_bantorem $remtok(%_bantorem,$2,32) } _BLtitle } alias _BLgetmod { unset %.mod.todo set %.mod.max $sline(@Banlist,0) set %.mod.num 1 :loop set %.mod.todo %.mod.todo $gettok($sline(@Banlist,%.mod.num),2,9) if ($_vi(.mod.num) <= %.mod.max) goto loop } alias _BLdomod { :loop set %.mod.mask $gettok(%.mod.todo,1,32) set %.mod.todo $remtok(%.mod.todo,%.mod.mask,32) if ($1 == a) _askr _BLrepmask New mask for %.mod.mask $+ ? elseif ($1 isin bc) { set %_arhelp _BLaddbxw $1 if ($2 == $null) _askr _arhelp Blacklist reason for %.mod.mask $+ ? else _pentry _arhelp $+ $_s2p($2-) Blacklist reason for %.mod.mask $+ ? } elseif ($1 == x) { set %.oldlvl $3 set %.oldban $4- if ($2 == $null) _askr _BLaddbxw1 Duration of X/W ban for %.mod.mask $+ , in hours? (336 max) else _pentry _BLaddbxw1 $+ $2 Duration of X/W ban for %.mod.mask $+ , in hours? (336 max) } elseif ($1 == z) _msgcs akick %_banchan add %.mod.mask elseif ($1 == d) { set %.mod.new $_ppmask(%.mod.mask,4) if ((%.mod.new != %.mod.mask) && (%.mod.new != *!*@*)) { _BLmodban - %.mod.mask _BLmodban + %.mod.new %.bl.num -a } } elseif ($1 == i) { set %.mod.new $_ppmask(%.mod.mask,3) if ((%.mod.new != %.mod.mask) && (%.mod.new != *!*@*)) { _BLmodban - %.mod.mask _BLmodban + %.mod.new %.bl.num -a } } if (%.mod.todo != $null) goto loop } alias _BLrepmask { _BLmodban - %.mod.mask _BLmodban + $1 %.bl.num -a if (%.mod.todo != $null) _BLdomod a } alias _BLaddbxw1 { set %_arhelp _BLaddbxw2 $1 if (%.oldlvl == $null) _askr _arhelp Level of X/W ban for %.mod.mask $+ ? else _pentry _arhelp $+ %.oldlvl Level of X/W ban for %.mod.mask $+ ? } alias _BLaddbxw2 { set %_arhelp _BLaddbxw x $1-2 if (%.oldban == $null) _askr _arhelp X/W ban reason for %.mod.mask $+ ? else _pentry _arhelp $+ $_s2p(%.oldban) X/W ban reason for %.mod.mask $+ ? } alias _BLaddbxw { if ($1 == b) black %.mod.mask -q $2- elseif ($1 == c) black %_banchan %.mod.mask -q $2- else { _msgxw $_isxw(%_banchan) ban %_banchan %.mod.mask $2- } if (%.mod.todo != $null) _BLdomod $1- } alias _BLclean { if ($gettok($1,2,33) == *@*) _error You should specify a more specific mask for banlist cleaning. elseif ($1 !isin d:n:i:o) { if ($_ismask($1)) set %.cln.clean $1 else { set %.cln.clean $address($1,5) if (%.cln.clean == $null) _lookup $1 ! _BLclean , } } set %.cln.num $line(@Banlist,0) unset %.+cln.found :loopm set %.cln.ban $gettok($line(@Banlist,%.cln.num),2,9) unset %.+cln.rem if ($1 == o) { set %.cln.age $gettok($line(@Banlist,%.cln.num),5,9) if ($gettok(%.cln.age,2,32) == days) { set %.cln.age $strip($gettok(%.cln.age,1,32)) if (%.cln.age >= $2) set %.+cln.rem $true } } elseif ($1 == n) { if ($gettok(%.cln.ban,2,33) == *@*) set %.+cln.rem $true } elseif ($1 == d) { set %.cln.dom $gettok(%.cln.ban,2,64) if ((* !isin %.cln.dom) && (? !isin %.cln.dom)) set %.+cln.rem $true } elseif ($1 == i) { if ($count(%.cln.ban,!) != 1) set %.+cln.rem $true elseif ($count(%.cln.ban,@) != 1) set %.+cln.rem $true else { set %.cln.nick $gettok(%.cln.ban,1,33) set %.cln.dom $gettok(%.cln.ban,2,64) set %.cln.scan $len(%.cln.nick) :loop1 set %.cln.asc $mid(%.cln.nick,%.cln.scan,1) if ((%.cln.asc !isletter) && (%.cln.asc !isnum) && (%.cln.asc !isin *?\|[]{}`^-_)) set %.+cln.rem $true else { if ($_vd(.cln.scan) > 0) goto loop1 set %.cln.scan $len(%.cln.dom) :loop2 set %.cln.asc $mid(%.cln.dom,%.cln.scan,1) if ((%.cln.asc !isletter) && (%.cln.asc !isnum) && (%.cln.asc !isin *?\|[]{}`^-_.&+=)) set %.+cln.rem $true elseif ($_vd(.cln.scan) > 0) goto loop2 } } } elseif ((%.cln.ban iswm %.cln.clean) || (%.cln.clean iswm %.cln.ban)) { set %.+cln.rem $true | set %.+cln.found $true } if (%.+cln.rem) _BLmodban - %.cln.ban %.cln.num if ($_vd(.cln.num) > 3) goto loopm if (($1 !isin d:n:i:o) && (%.+cln.found == $null)) _error No matching bans found } menu @Pager { dclick /window -c @Pager $_dynpop(%+pager) Pager on:pager on $_dynpop($_not(%+pager)) Pager off:pager off - Close:window -c @Pager }